


The Perfect Match

by Seraph_Novak



Series: Tyrus One-Shots [46]
Category: Andi Mack (TV)
Genre: Crushes, Cute, Friends to Lovers, High School, Love Confessions, M/M, Mutual Pining, One Shot, Soulmates, Tyrus - Freeform
Language: English
Status: Completed
Published: 2019-02-15
Updated: 2019-02-15
Packaged: 2019-10-29 04:10:06
Rating: Teen And Up Audiences
Warnings: No Archive Warnings Apply
Chapters: 1
Words: 3,505
Publisher: archiveofourown.org
Story URL: https://archiveofourown.org/works/17800814
Author URL: https://archiveofourown.org/users/Seraph_Novak/pseuds/Seraph_Novak
Summary: In a world where you can calculate your romantic compatibility with other people, Cyrus Goodman wants nothing more than to match highly with his best friend and longtime crush, TJ Kippen.





	The Perfect Match

**Author's Note:**

> Hey, guys! This is a fic I've been messing around with for a while now... It was initially VERY different, but I'm happy with how it turned out. I hope you enjoy!
> 
> As always, all comments and kudos are very much appreciated ♥
> 
> [My Tumblr](https://seraph-novak.tumblr.com)

The walls in the waiting room are glossy and white, almost blinding if you stare at them for too long. Cyrus stares down at his feet instead, blinking the stars out of his eyes as he takes a deep, steadying breath. Next to him, TJ bumps their knees together and smiles. It’s a comforting sight that eases his nerves somewhat, flushing them out with a warm, gooey feeling that only TJ is capable of stirring inside his gut. He returns the smile with one of his own – shaky, but just as genuine – and reaches out to take his hand. TJ sweeps a thumb over his knuckles, sending shivers dancing across his arm. It’s enough to keep him grounded, at least for a little while.

“Are you okay, Cy?” Andi asks him. She’s sitting next to Buffy and Marty on the chairs opposite him and TJ, her eyebrows curving upwards with concern.

“Yeah, I’m good,” he says, squeezing TJ’s hand as the word ‘good’ lodges in the back of his throat, leaving a bitter taste in his mouth. “Just nervous.”

Buffy untangles her hands from around Marty’s waist and pats the top of his knee. “Don’t be nervous,” she says, her voice a strange combination of gentle and commanding. “It’ll take them a few hours to add you to the system. You probably won’t get any matches until tomorrow morning.”

“Ugh.” He flops back in his chair, the back of his head hitting the gleaming wall with a heavy _thunk_. “I don’t wanna wait that long… Waiting’s the worst part!”

“I got my results the same day,” Andi says, a reassuring lilt to her voice. When Cyrus doesn’t respond, she looks to her friends for support. “What about you, Marty?”

“I got mine the next day,” he says with a shrug.

TJ hooks an arm around Cyrus’ shoulders, rubbing the sore spot already starting to swell on the back of his head, and tilts his face towards him with a gentle nudge of his finger. “It only took a couple hours for mine to come through,” he murmurs, so soft only Cyrus can hear him. “Don’t stress about it, Underdog. It’s different for everyone.”

“I don’t even know why I’m nervous,” Cyrus admits, his eyes never leaving TJ’s face. “It’s not like I’m expecting any high matches…”

“You wouldn’t be the only one,” Andi says. It’s a pitiful attempt to inject some humour into the situation, but the tremble in her voice gives her away. A few months ago, when she turned sixteen and underwent this very same process, she discovered that she and Jonah, her boyfriend at the time, only had a measly 46% match. It was awkward for everyone involved.

“I’m sure you’ll match highly with someone,” Buffy butts in, shooting Andi a sideways glare. She, on the other hand, was lucky enough to get a whopping 87% match with Marty – a fact she loves to brag about whenever possible.

TJ rolls his eyes, and Cyrus feels his muscles turn stiff beside him. “It’s not that big a deal,” he says through gritted teeth. “Not everyone needs a high match to fall in love, you know?”

“You’re only saying that because your matches suck,” Buffy says.

“Gee, thanks.”

“You’re welcome.” She flashes him a smug smile, then turns back to Cyrus. “Don’t listen to these downers, okay? They’re just sad because they’re single.”

Andi whacks her friend on the arm. “Hey! I’m single by _choice_ , thank you very much.”

“Yeah.” Buffy snorts. “Until you get a match above 70%, right?”

“I’d be happy with a 65 at this point.”

“You’ll find someone, don’t worry,” Buffy says, her teasing smirk softening as she takes Andi’s hand. “It takes a little longer for some people to get matched, remember? But it’ll happen eventually. Even for you, TJ.”

When Cyrus glances at TJ, he’s surprised to find his pale green eyes already watching him closely, his smile tilted at a sad angle as he gives his hand another squeeze.

“I’m happy to wait,” he says.

Cyrus blushes and looks away, his stomach swooping as TJ goes back to brushing his knuckles with his thumb, their knees grazing ever so slightly. With every breath, their shoulders rub against each other, and Cyrus can feel his skin burning hotter and hotter, set alight with the need to touch TJ, to hold him close and never let go… For the billionth time today, he wonders what their match will be. He’s always thought – or hoped, at least – that it would be fairly high, but he’s never dared to confess this to anyone. Not even Buffy and Andi, who are pretty much convinced that TJ is already smitten with him.

He thinks back to the pact he made with himself this time last year, on his fifteenth birthday: if he and TJ are matched above 75%, he promised himself he’d finally ask him out. It seemed like a good idea at the time, but now the mere possibility of being highly matched with his best friend makes him want to throw up. He’s not sure if it’s a good or bad kind of scared, but either way, he’s _terrified_.

“Mr Goodman?” A young woman in a white turtleneck pokes her head into the waiting room, her teeth the same dazzling shade as the walls around them. “We’re ready to see you now.”

A bolt of panic freezes him in place, his vision starting to warp as he stares at the open door across the room. The woman’s smile wavers for just a second, then turns warm with understanding. She gives him a small nod, then ducks back into the room.

“I’ll give you a moment.”

“Hey,” TJ says softly, lifting their joined hands to his lips. Once he’s got Cyrus’ attention, he gives him a wink that makes his heart leap and soar like a kite caught in a storm. “You’ve got this, Underdog.”

And just like that, his nerves evaporate. He wishes more than anything that he could lean forward and whisper a thanks against his lips, but he settles for a smile instead. If all goes well, he’ll be kissing TJ this time tomorrow anyway. Just the thought makes his mouth tingle in anticipation, his chest bubbling with warmth.

“Thank you,” he says, sharing a private smile with TJ before turning to the rest of his friends. “All of you. I really appreciate you guys being here.”

Andi and Buffy drag him into a group hug, then usher him out of the waiting room, sending him off with encouraging smiles and thumbs up. He gives them a quick wave at the end of the corridor, his eyes lingering on TJ for a moment longer, then takes a deep breath and walks through the door.

~~~~~

“So,” Andi says as they’re heading towards The Spoon for lunch. “Did she tell you when you’d get your matches?”

Cyrus looks down at the white gadget strapped around his wrist, its screen a dull black until he touches it with his finger. It looks like a watch of sorts, but it’s really just a fancy device that will soon show him his compatibility percentages with people all over the world; at the moment, it just says ‘Matches Pending’.

“She said it would take anywhere between five hours and two days,” he says, tapping the screen again so it fades back to black. “But she also said that some matches don’t come through for years, so… I guess it’s all a waste of time.”

TJ chuckles. He has his arm draped over Cyrus’ shoulders as they walk, his fingers tapping silent tunes against his arm. It feels really nice, and completely normal. Probably because it is. He and TJ have never been shy of touching each other; they’re constantly finding ways to close the space between them, no matter where they are or who’s watching them. In many ways, it’s like they’re already dating.

“Don’t be such a grump,” TJ says fondly, hugging him sideways against his chest.

“I’m not being grumpy,” he insists, purposely pouting his lips to make TJ smile even brighter. “I just don’t understand why it has to be so complicated. Why couldn’t they just tell me there and then?”

Buffy laughs. “They’re comparing your data with billions of other people’s in the world… Maybe cut them some slack?”

“Okay, that’s fair.”

When they get to The Spoon, TJ holds the door open for him with a chivalrous smile, then orders him a double chocolate milkshake and an extra-large basket of baby taters. The five of them spend the next hour and a half stuffing their faces and making light conversation, until Cyrus has all but forgotten about the possibly life-changing results he’ll be receiving at some point in the next two days. It’s only when Andi asks for the bill that reality comes crashing back down, and that familiar feeling of nausea twists in his stomach.   

“Cyrus?”

He snaps himself out of his daze, turning to find TJ watching him with knitted brows. The genuine concern on his face is unfairly adorable, and Cyrus wants nothing more than to wrap his arms around him and tell him how much he cares… But then he remembers the heartbreak Andi and Jonah went through not that long ago, and he decides against it.

“Are you alright?” TJ asks him, placing a comforting hand on his shoulder. “Do you want me to walk you home?”

Cyrus swallows thickly and nods.

“Okay.”

“TJ?” He grabs his arm as he slides out of the booth, his tone brimming with desperation. Once TJ has sat back down, he loosens his grip and huffs a laugh, his cheeks turning warm. “Sorry, I just… Could you maybe sleep over tonight? I don’t wanna be alone.”

A gorgeous smile brightens TJ’s face, and Cyrus immediately relaxes.

“Of course I’ll stay with you,” he whispers.

It feels like there might be a double meaning there, but Cyrus is too jittery with nerves to overanalyse it. All he wants to do is go home, change into his comfiest pyjamas, and spend the night watching cheesy rom-coms with his best friend. And if he happens to get highly matched with TJ while they’re in the same room, then that would just be an added bonus…

~~~~~

The final scene of _When Harry Met Sally_ never fails to make him weep. Which is why he’s currently curled up in a ball on his bed, sniffing back tears while TJ hands him tissues with a fond and slightly teasing smile.

“Why did you pick a film that always makes you cry?” he asks.

Cyrus wipes his nose and shrugs. “These are happy tears.”

“You’re happy for the fictional characters?”

“Stop laughing at me!”

TJ holds up his hands in surrender, his lips twitching with a barely restrained smirk. “I can’t help it! You’re too adorable.”

“I’m not adorable,” Cyrus says, deliberately blowing his nose to hide the blush blooming across his cheeks. “I just think it’s really nice to see two friends fall in love with each other, you know? I want a romance like that.”

He turns to TJ, preparing himself for another mocking grin, but the older boy is staring down at his hands instead, nervously tugging at his fingers as he chews his bottom lip. Cyrus scoots closer to TJ, his mattress dipping beneath their shared weight, and steadies his fidgeting hands.

“TJ?” he says, his voice low and soft. At TJ’s answering silence, he cups one side of his face and turns it towards him, gently forcing their eyes to meet. “Are you okay?”

TJ barks a wet laugh. “I, um… I don’t know…”

“What’s wrong?”

“Nothing.”

“We both know that isn’t true.”

A tear rolls down TJ’s cheek, catching on the curve of a crooked smile before landing on the duvet wrapped around his legs. He wipes his eyes with the heel of his palm and breathes deeply through his nose, flicking an anxious glance at Cyrus. There’s fear and apprehension twisting his expression, but also a hint of excitement, a whisper of hope…  

“I need to tell you something.”

Cyrus winces. “Those are words you never want to hear.”

“Sorry.” Another laugh colours his words. TJ has always been a nervous laugher. “I know this is a weird time to tell you this, but… I _need_ to tell you before you get your matches through.”

“My matches? Why –”

“In case our percentage is terrible,” TJ says, desperately grabbing at Cyrus’ hands and holding them against his chest. He uses his shoulders to wipe away another tear, then presses a kiss to Cyrus’ knuckles. “If we don’t get a good match, I know I’ll lose my nerve… So I’ve gotta tell you now, Underdog. In case it’s the only chance I get.”

Cyrus gulps. “Tell me what?”

“I love you.”

All at once, the world moves in slow motion and the room starts to spin. He was expecting a confession of sorts – a simple “I like you” at best – but nothing like this. He’s not a complete idiot; he knows TJ likes to flirt with him, and he knows their relationship goes way beyond the bounds of friendship. But he never thought – never _hoped_ – that TJ might return his feelings to this extent. He tries to speak, but nothing comes out. The words feel like cotton balls in his mouth, thick and dry and impossible to swallow…  

“It’s okay,” TJ says, that small whisper of hope choked into silence. “You don’t have to say anything. I’m sorry for making things awkward.”

Cyrus shakes his head, tightening his grip on TJ’s withdrawing hands. “No! Wait –”

Before he can finish his sentence, a small ‘ping’ sounds from the gadget strapped around his wrist, its formerly blank screen awakening with colour, a brilliant white that slices through the dark room. A simple message appears on the screen: ‘Matches Found’.

“My matches are here,” Cyrus says, although he’s sure TJ can read the message just as clearly, seeing as they’re sitting so close to each other.

“That was fast,” TJ says. His voice sounds dull and congested, like he’s fighting back tears. “Are you ready?”

“I… I don’t know.”

“Forget what I said before,” TJ says, sniffing hard. He dries his face with the sleeve of his hoodie and forces a smile. “This is your moment, Cy. Just ignore me.”

“But, Teej –”

“I’m serious, alright? I’ll be fine.”

Cyrus opens his mouth to protest further, but TJ shoots him a warning look, a sad smile ghosting his lips. He’s being very insistent, and Cyrus doesn’t have the emotional energy to fight him. Perhaps there’s only one way to express his feelings, and that’s to show TJ their inevitably high match. If they really are in love with each other – and Cyrus has never been so sure of anything before in his life – then they’re bound to be highly matched, right?

“Fine,” he says, a stubborn set to his jaw. “We’ll do this your way.”

He sucks in a breath, then taps the glowing screen. A long list of percentages fills the empty space – all of them way below average – so Cyrus uses the filters to sort the matches from highest to lowest. It takes a few seconds to submit the request, and then the list refreshes itself.

“Oh my god.”

“Cyrus?”

When TJ touches his shoulder, Cyrus flinches back, ripping the device off his wrist and throwing it across the bed. His chest is heaving with shaky breaths as he wraps his arms around his legs and starts rocking back and forth.

“What’s wrong?” TJ asks, his voice lifting with concern. He places a hesitant hand on Cyrus’ knee, which is bouncing up and down with nervous energy.

Cyrus swallows thickly and points at the discarded gadget sitting on the edge of his bed. “Is that real? That can’t be real…”

“What are you talking about?”

“Just… Just look at it.”

“Cy?”

“Please, TJ.” He grabs his friend’s arm and squeezes it, the beginnings of a smile tugging at his lips. He can feel hysterical laughter building in his chest, threatening to burst out at any moment as fresh tears spring to his eyes. “Seriously, TJ. Look at it…”

TJ raises a sceptical eyebrow, but does as he’s told. There’s a moment of breathless silence as TJ picks it up and taps the screen, followed by a shattering gasp as he throws the gadget back at Cyrus, like a hot potato, and falls off the bed.

“TJ!”

“I’m okay!”

Cyrus peers over the bed and stretches out his arm, offering his hand to TJ. When they’re both sitting back down, and they’ve more or less caught their breath, Cyrus dares to look at the screen again. His heart stops beating for a brief moment as he re-reads his top match, his eyes skipping over the 100% and landing on the words beside it: TJ Kippen, 17/y.o., Shadyside, Midwest, USA.

“You’re my top match,” he says, his voice sounding faraway, as if he’s in a dream.

TJ splutters a laugh. “I don’t think that’s the surprising part, Cy.”

“You already knew I’d be your top match?”

“Well, I _hoped_ …” He scratches the back of his head, suddenly appearing bashful. “But then I told you how I felt, and you didn’t say anything, so…”

“I was shocked!” Cyrus says, throwing his hands in the air. “I kinda guessed you had a crush on me, but I never thought you might –” He stops himself, too afraid to say the word out loud. He slowly lowers his arms and stares down at his lap, a blush creeping up his neck. “Did you really mean what you said?”

TJ brushes his knuckles across his cheek, smiling fondly. “I don’t think you could get a 100% match with someone without being head over heels in love with them.”

For a second, he gets lost in TJ’s adoring gaze, his insides turning to mush as a goofy smile devours his face. But then he catches a glimpse of the screen beaming up at him, and reality comes swooping back in, knocking the breath out of his lungs once again.

“It’s not possible,” he says. “I mean, _yes_ , I’m in love you. Like, really, _really_ in love with you. But the highest ever recorded match is only 92%. Perfect matches don’t exist, TJ! Maybe in movies, but not in real life.” He closes his eyes and massages his temples, desperately trying to regain his cool. “If this was actually real, then that would make us…”

“Soulmates?” TJ suggests.

Cyrus looks up at him, completely taken aback by his unfazed expression. “How are you not freaking out about this?”

TJ chuckles. “The only thing I’ve ever been 100% certain about in my life is how much I love you,” he says, his eyes softening in awe as he maps Cyrus’ face with his fingertips. “So, no… The fact that we’re soulmates doesn’t freak me out at all.”

“You mean… The idea of spending the rest of your life with me doesn’t scare you?”

A grin slowly spreads across TJ’s face. “In the words of Harry Burns,” he says, “‘When you realize you want to spend the rest of your life with somebody, you want the rest of your life to start as soon as possible’.”

Cyrus doesn’t even think before lunging himself at TJ, a happy chorus of _“I love him. I love him. I love him.”_ playing in his head as he fervently hugs the boy of his dreams. There’s an uncontrollable smile dimpling his cheeks, and his heart is racing a mile a minute, but he somehow feels calmer than he’s ever felt before in his life, completely at ease in TJ’s loving embrace.

“Do you think they know?” he asks, his words muffled against TJ’s shoulder. “There must be people who keep tabs on the matches, right?”

TJ sighs. “Yeah, probably.”

“So… We’re gonna be media sensations pretty soon.”

As if sensing his fear, TJ pulls away, a deep frown creasing his brow, and cups Cyrus’ face in his hands. “Don’t be afraid, Underdog. We’re in this together, okay?”

Cyrus nods. “Okay.”

Within minutes, there’s a screeching of tyres outside his bedroom window, followed closely by frantic knocking on their front door. He can hear his mom and stepdad whispering to each other, completely oblivious as to why there are dozens of news vans suddenly parked outside their house.

“Should we go talk to them?” TJ asks, lifting his shoulders in a dubious shrug. “We have to face them eventually.”

Cyrus glances at the flashing lights glinting off his window, then back at TJ, his worries melting away the moment he looks into those familiar green eyes, forever brimming with unconditional love and support.

“They can wait,” he says, smiling as he palms the back of TJ’s neck and brings his face closer, until their lips are just a hair’s breadth away. “I have a soulmate to kiss.”


End file.
